home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 November / Macworld (1999-11).dmg / Updaters / WhiteCap 3.0.4 / WhiteCap Source.sit / WhiteCap Source / SJ SDK / SoundJamAPI.c < prev    next >
Text File  |  1999-08-06  |  14KB  |  547 lines

  1. /*
  2.     File:        PlayerAPI.c
  3.  
  4.     Contains:    
  5.  
  6.     Written by:    Jeff Robbin
  7.  
  8.     Copyright:    Copyright ©1998 Jeff Robbin
  9. */
  10.  
  11.  
  12. #include "SoundJamAPI.h"
  13.  
  14.  
  15. // MemClear
  16. //
  17. static void MemClear (LogicalAddress dest, SInt32 length)
  18. {
  19.     register unsigned char    *ptr;
  20.  
  21.     ptr = (unsigned char *) dest;
  22.     
  23.     if( length > 16 )
  24.     {
  25.         register unsigned long    *longPtr;
  26.         
  27.         while( ((unsigned long) ptr & 3) != 0 )
  28.         {
  29.             *ptr++ = 0;
  30.             --length;
  31.         }
  32.         
  33.         longPtr = (unsigned long *) ptr;
  34.         
  35.         while( length >= 4 )
  36.         {
  37.             *longPtr++     = 0;
  38.             length        -= 4;
  39.         }
  40.         
  41.         ptr = (unsigned char *) longPtr;
  42.     }
  43.     
  44.     while( --length >= 0 )
  45.     {
  46.         *ptr++ = 0;
  47.     }
  48. }
  49.  
  50.  
  51. // CallSoundJam
  52. //
  53. static OSStatus CallSoundJam (void *appCookie, SoundJamProcPtr handler, OSType message, PlayerMessageInfo *messageInfo)
  54. {
  55.     PlayerMessageInfo    localMessageInfo;
  56.     
  57.     if (messageInfo == nil)
  58.     {
  59.         MemClear(&localMessageInfo, sizeof(localMessageInfo));
  60.         
  61.         messageInfo = &localMessageInfo;
  62.     }
  63.     
  64.     messageInfo->version = kCurrentPluginMessageVersion;
  65.     
  66.     return handler(appCookie, message, messageInfo);
  67. }
  68.  
  69.  
  70. // PlayerSetPreference
  71. //
  72. OSStatus PlayerSetPreference (void *appCookie, SoundJamProcPtr playerHandler, OSType preference, UInt32 value)
  73. {
  74.     PlayerMessageInfo    messageInfo;
  75.     
  76.     MemClear(&messageInfo, sizeof(messageInfo));
  77.     
  78.     messageInfo.u.preferenceMessage.preference    = preference;
  79.     messageInfo.u.preferenceMessage.value        = value;
  80.  
  81.     return CallSoundJam(appCookie, playerHandler, kPlayerSetPreferenceMessage, &messageInfo);
  82. }
  83.  
  84.  
  85. // PlayerGetPreference
  86. //
  87. OSStatus PlayerGetPreference (void *appCookie, SoundJamProcPtr playerHandler, OSType preference, UInt32 *value)
  88. {
  89.     OSStatus            status;
  90.     PlayerMessageInfo    messageInfo;
  91.     
  92.     MemClear(&messageInfo, sizeof(messageInfo));
  93.     
  94.     messageInfo.u.preferenceMessage.preference    = preference;
  95.  
  96.     status = CallSoundJam(appCookie, playerHandler, kPlayerGetPreferenceMessage, &messageInfo);
  97.     
  98.     if ((value != nil) && (status == noErr))
  99.         *value = messageInfo.u.preferenceMessage.value;
  100.     
  101.     return status;
  102. }
  103.  
  104.  
  105. // PlayerSetFullScreen
  106. //
  107. OSStatus PlayerSetFullScreen (void *appCookie, SoundJamProcPtr playerHandler, Boolean fullScreen)
  108. {
  109.     PlayerMessageInfo    messageInfo;
  110.     
  111.     MemClear(&messageInfo, sizeof(messageInfo));
  112.     
  113.     messageInfo.u.setFullScreenMessage.fullScreen = fullScreen;
  114.  
  115.     return CallSoundJam(appCookie, playerHandler, kPlayerSetFullScreenMessage, &messageInfo);
  116. }
  117.  
  118.  
  119. // PlayerSetFullScreenOptions
  120. //
  121. OSStatus PlayerSetFullScreenOptions (void *appCookie, SoundJamProcPtr playerHandler, SInt16 minBitDepth, SInt16 maxBitDepth, SInt16 preferredBitDepth, SInt16 desiredWidth, SInt16 desiredHeight)
  122. {
  123.     PlayerMessageInfo    messageInfo;
  124.     
  125.     MemClear(&messageInfo, sizeof(messageInfo));
  126.     
  127.     messageInfo.u.setFullScreenOptionsMessage.minBitDepth        = minBitDepth;
  128.     messageInfo.u.setFullScreenOptionsMessage.maxBitDepth        = maxBitDepth;
  129.     messageInfo.u.setFullScreenOptionsMessage.preferredBitDepth = preferredBitDepth;
  130.     messageInfo.u.setFullScreenOptionsMessage.desiredWidth        = desiredWidth;
  131.     messageInfo.u.setFullScreenOptionsMessage.desiredHeight        = desiredHeight;
  132.  
  133.     return CallSoundJam(appCookie, playerHandler, kPlayerSetFullScreenOptionsMessage, &messageInfo);
  134. }
  135.  
  136.  
  137. // PlayerSetDefaultWindowSize
  138. //
  139. OSStatus PlayerSetDefaultWindowSize (    void *            appCookie,
  140.                                         SoundJamProcPtr    playerHandler,
  141.                                         SInt16            defaultWidth,
  142.                                         SInt16            defaultHeight,
  143.                                         SInt16            minWidth,
  144.                                         SInt16            minHeight,
  145.                                         SInt16            maxWidth,
  146.                                         SInt16            maxHeight)
  147. {
  148.     PlayerMessageInfo    messageInfo;
  149.     
  150.     MemClear(&messageInfo, sizeof(messageInfo));
  151.     
  152.     messageInfo.u.setDefaultWindowSizeMessage.defaultWidth    = defaultWidth;
  153.     messageInfo.u.setDefaultWindowSizeMessage.defaultHeight    = defaultHeight;
  154.  
  155.     messageInfo.u.setDefaultWindowSizeMessage.minWidth        = minWidth;
  156.     messageInfo.u.setDefaultWindowSizeMessage.minHeight        = minHeight;
  157.  
  158.     messageInfo.u.setDefaultWindowSizeMessage.maxWidth        = maxWidth;
  159.     messageInfo.u.setDefaultWindowSizeMessage.maxHeight        = maxHeight;
  160.  
  161.     return CallSoundJam(appCookie, playerHandler, kPlayerSetDefaultWindowSizeMessage, &messageInfo);
  162. }
  163.  
  164.  
  165. // PlayerShowHideEQWindow
  166. //
  167. void PlayerShowHideEQWindow (void *appCookie, SoundJamProcPtr playerHandler, Boolean showWindow)
  168. {
  169.     PlayerMessageInfo    messageInfo;
  170.     
  171.     MemClear(&messageInfo, sizeof(messageInfo));
  172.     
  173.     messageInfo.u.showHideMessage.showWindow = showWindow;
  174.  
  175.     (void) CallSoundJam(appCookie, playerHandler, kPlayerShowHideEQMessage, &messageInfo);
  176. }
  177.  
  178.  
  179. // PlayerShowHidePlaylistWindow
  180. //
  181. void PlayerShowHidePlaylistWindow (void *appCookie, SoundJamProcPtr playerHandler, Boolean showWindow)
  182. {
  183.     PlayerMessageInfo    messageInfo;
  184.     
  185.     MemClear(&messageInfo, sizeof(messageInfo));
  186.     
  187.     messageInfo.u.showHideMessage.showWindow = showWindow;
  188.  
  189.     (void) CallSoundJam(appCookie, playerHandler, kPlayerShowHidePlaylistMessage, &messageInfo);
  190. }
  191.  
  192.  
  193. // PlayerDragWindow
  194. //
  195. void PlayerDragWindow (void *appCookie, SoundJamProcPtr playerHandler, WindowPtr window, Point globalWhere)
  196. {
  197.     PlayerMessageInfo    messageInfo;
  198.     
  199.     MemClear(&messageInfo, sizeof(messageInfo));
  200.     
  201.     messageInfo.u.dragWindowMessage.window        = window;
  202.     messageInfo.u.dragWindowMessage.globalWhere    = globalWhere;
  203.     
  204.     CallSoundJam(appCookie, playerHandler, kPlayerDragWindowMessage, &messageInfo);
  205. }
  206.  
  207.  
  208. // PlayerGetPluginData
  209. //
  210. OSStatus PlayerGetPluginData (void *appCookie, SoundJamProcPtr playerHandler, void *dataPtr, UInt32 dataBufferSize, UInt32 *dataSize)
  211. {
  212.     OSStatus            status;
  213.     PlayerMessageInfo    messageInfo;
  214.     
  215.     MemClear(&messageInfo, sizeof(messageInfo));
  216.     
  217.     messageInfo.u.getPluginDataMessage.dataPtr            = dataPtr;
  218.     messageInfo.u.getPluginDataMessage.dataBufferSize    = dataBufferSize;
  219.     
  220.     status = CallSoundJam(appCookie, playerHandler, kPlayerGetPluginDataMessage, &messageInfo);
  221.     
  222.     if (dataSize != nil)
  223.         *dataSize = messageInfo.u.getPluginDataMessage.dataSize;
  224.     
  225.     return status;
  226. }
  227.  
  228.  
  229. // PlayerSetPluginData
  230. //
  231. OSStatus PlayerSetPluginData (void *appCookie, SoundJamProcPtr playerHandler, void *dataPtr, UInt32 dataSize)
  232. {
  233.     PlayerMessageInfo    messageInfo;
  234.     
  235.     MemClear(&messageInfo, sizeof(messageInfo));
  236.     
  237.     messageInfo.u.setPluginDataMessage.dataPtr    = dataPtr;
  238.     messageInfo.u.setPluginDataMessage.dataSize    = dataSize;
  239.     
  240.     return CallSoundJam(appCookie, playerHandler, kPlayerSetPluginDataMessage, &messageInfo);
  241. }
  242.  
  243.  
  244. // PlayerIdle
  245. //
  246. OSStatus PlayerIdle (void *appCookie, SoundJamProcPtr playerHandler)
  247. {
  248.     return CallSoundJam(appCookie, playerHandler, kPlayerIdleMessage, nil);
  249. }
  250.  
  251.  
  252. OSStatus PlayerDoneTrack (void *appCookie, SoundJamProcPtr playerHandler)
  253. {
  254.     return CallSoundJam(appCookie, playerHandler, kPlayerDoneTrackMessage, nil);
  255. }
  256.  
  257.  
  258. // PlayerPlayTrack
  259. //
  260. OSStatus PlayerPlayTrack (void *appCookie, SoundJamProcPtr playerHandler)
  261. {
  262.     return CallSoundJam(appCookie, playerHandler, kPlayerPlayTrackMessage, nil);
  263. }
  264.  
  265.  
  266. // PlayerStopTrack
  267. //
  268. OSStatus PlayerStopTrack (void *appCookie, SoundJamProcPtr playerHandler)
  269. {
  270.     return CallSoundJam(appCookie, playerHandler, kPlayerStopTrackMessage, nil);
  271. }
  272.  
  273.  
  274. // PlayerPauseTrack
  275. //
  276. OSStatus PlayerPauseTrack (void *appCookie, SoundJamProcPtr playerHandler)
  277. {
  278.     return CallSoundJam(appCookie, playerHandler, kPlayerPauseTrackMessage, nil);
  279. }
  280.  
  281.  
  282. // PlayerNextTrack
  283. //
  284. OSStatus PlayerNextTrack (void *appCookie, SoundJamProcPtr playerHandler)
  285. {
  286.     return CallSoundJam(appCookie, playerHandler, kPlayerNextTrackMessage, nil);
  287. }
  288.  
  289.  
  290. // PlayerPrevTrack
  291. //
  292. OSStatus PlayerPrevTrack (void *appCookie, SoundJamProcPtr playerHandler)
  293. {
  294.     return CallSoundJam(appCookie, playerHandler, kPlayerPrevTrackMessage, nil);
  295. }
  296.  
  297.  
  298. // PlayerLoadTrack
  299. //
  300. OSStatus PlayerLoadTrack (void *appCookie, SoundJamProcPtr playerHandler)
  301. {
  302.     return CallSoundJam(appCookie, playerHandler, kPlayerLoadTrackMessage, nil);
  303. }
  304.  
  305.  
  306. // PlayerOpenPrefs
  307. //
  308. void PlayerOpenPrefs (void *appCookie, SoundJamProcPtr playerHandler)
  309. {
  310.     CallSoundJam(appCookie, playerHandler, kPlayerOpenPrefsMessage, nil);
  311. }
  312.  
  313.  
  314. // PlayerCloseWindow
  315. //
  316. void PlayerCloseWindow (void *appCookie, SoundJamProcPtr playerHandler, WindowPtr window)
  317. {
  318.     PlayerMessageInfo    messageInfo;
  319.     
  320.     MemClear(&messageInfo, sizeof(messageInfo));
  321.  
  322.     messageInfo.u.closeWindowMessage.window    = window;
  323.  
  324.     CallSoundJam(appCookie, playerHandler, kPlayerCloseWindowMessage, &messageInfo);
  325. }
  326.  
  327.  
  328. // PlayerMinimizeWindow
  329. //
  330. void PlayerMinimizeWindow (void *appCookie, SoundJamProcPtr playerHandler, WindowPtr window, Boolean isMinimized)
  331. {
  332.     PlayerMessageInfo    messageInfo;
  333.     
  334.     MemClear(&messageInfo, sizeof(messageInfo));
  335.  
  336.     messageInfo.u.minimizeWindowMessage.window        = window;
  337.     messageInfo.u.minimizeWindowMessage.minimized    = isMinimized;
  338.  
  339.     CallSoundJam(appCookie, playerHandler, kPlayerMinimizeWindowMessage, &messageInfo);
  340. }
  341.  
  342.  
  343. // PlayerSetTrackPosition
  344. //
  345. OSStatus PlayerSetTrackPosition (void *appCookie, SoundJamProcPtr playerHandler, UInt32 positionInMS)
  346. {
  347.     PlayerMessageInfo    messageInfo;
  348.     
  349.     MemClear(&messageInfo, sizeof(messageInfo));
  350.     
  351.     messageInfo.u.setTrackPositionMessage.positionInMS    = positionInMS;
  352.  
  353.     return CallSoundJam(appCookie, playerHandler, kPlayerSetTrackPositionMessage, &messageInfo);
  354. }
  355.  
  356.  
  357. // PlayerSetVolumeBalance
  358. //
  359. OSStatus PlayerSetVolumeBalance (void *appCookie, SoundJamProcPtr playerHandler, SInt32 volume, SInt32 balance)
  360. {
  361.     PlayerMessageInfo    messageInfo;
  362.     
  363.     MemClear(&messageInfo, sizeof(messageInfo));
  364.     
  365.     messageInfo.u.setVolumeBalanceMessage.volume    = volume;
  366.     messageInfo.u.setVolumeBalanceMessage.balance    = balance;
  367.  
  368.     return CallSoundJam(appCookie, playerHandler, kPlayerSetVolumeBalanceMessage, &messageInfo);
  369. }
  370.  
  371.  
  372. // PlayerSetTrebleBass
  373. //
  374. OSStatus PlayerSetTrebleBass (void *appCookie, SoundJamProcPtr playerHandler, SInt32 treble, SInt32 bass)
  375. {
  376.     PlayerMessageInfo    messageInfo;
  377.     
  378.     MemClear(&messageInfo, sizeof(messageInfo));
  379.     
  380.     messageInfo.u.setTrebleBassMessage.treble    = treble;
  381.     messageInfo.u.setTrebleBassMessage.bass    = bass;
  382.  
  383.     return CallSoundJam(appCookie, playerHandler, kPlayerSetTrebleBassMessage, &messageInfo);
  384. }
  385.  
  386.  
  387. // PlayerShowAbout
  388. //
  389. void PlayerShowAbout (void *appCookie, SoundJamProcPtr playerHandler)
  390. {
  391.     CallSoundJam(appCookie, playerHandler, kPlayerShowAboutMessage, nil);
  392. }
  393.  
  394.  
  395. // PlayerOpenURL
  396. //
  397. void PlayerOpenURL (void *appCookie, SoundJamProcPtr playerHandler, SInt8 *string, UInt32 length)
  398. {
  399.     PlayerMessageInfo    messageInfo;
  400.     
  401.     MemClear(&messageInfo, sizeof(messageInfo));
  402.     
  403.     messageInfo.u.openURLMessage.url    = string;
  404.     messageInfo.u.openURLMessage.length    = length;
  405.  
  406.     CallSoundJam(appCookie, playerHandler, kPlayerOpenURLMessage, &messageInfo);
  407. }
  408.  
  409.  
  410. // PlayerSetEQLevel
  411. //
  412. OSStatus PlayerSetEQLevel (void *appCookie, SoundJamProcPtr playerHandler, UInt32 band, SInt32 level)
  413. {
  414.     PlayerMessageInfo    messageInfo;
  415.     
  416.     MemClear(&messageInfo, sizeof(messageInfo));
  417.     
  418.     messageInfo.u.setEQLevelMessage.band    = band;
  419.     messageInfo.u.setEQLevelMessage.level    = level;
  420.  
  421.     return CallSoundJam(appCookie, playerHandler, kPlayerSetEQLevelMessage, &messageInfo);
  422. }
  423.  
  424.  
  425. // PlayerSetEQOptions
  426. //
  427. OSStatus PlayerSetEQOptions (void *appCookie, SoundJamProcPtr playerHandler, OptionBits options)
  428. {
  429.     PlayerMessageInfo    messageInfo;
  430.     
  431.     MemClear(&messageInfo, sizeof(messageInfo));
  432.     
  433.     messageInfo.u.setEQOptionsMessage.options    = options;
  434.  
  435.     return CallSoundJam(appCookie, playerHandler, kPlayerSetEQOptionsMessage, &messageInfo);
  436. }
  437.  
  438.  
  439. // PlayerPopupEQPresetsMenu
  440. //
  441. OSStatus PlayerPopupEQPresetsMenu (void *appCookie, SoundJamProcPtr playerHandler, Point localPt)
  442. {
  443.     PlayerMessageInfo    messageInfo;
  444.     
  445.     MemClear(&messageInfo, sizeof(messageInfo));
  446.     
  447.     messageInfo.u.popupEQPresetsMenuMessage.localPt    = localPt;
  448.  
  449.     return CallSoundJam(appCookie, playerHandler, kPlayerPopupEQPresetsMenuMessage, &messageInfo);
  450. }
  451.  
  452.  
  453. // PlayerDecodeDone
  454. //
  455. void PlayerDecodeDone (void *appCookie, SoundJamProcPtr playerHandler, void *playerCookie, OSStatus readStatus, OSStatus decodeStatus, UInt32 numSamples)
  456. {
  457.     PlayerMessageInfo    messageInfo;
  458.     
  459.     MemClear(&messageInfo, sizeof(messageInfo));
  460.     
  461.     messageInfo.u.decodeDoneMessage.playerCookie    = playerCookie;
  462.     messageInfo.u.decodeDoneMessage.readStatus        = readStatus;
  463.     messageInfo.u.decodeDoneMessage.decodeStatus    = decodeStatus;
  464.     messageInfo.u.decodeDoneMessage.numSamples        = numSamples;
  465.     
  466.     CallSoundJam(appCookie, playerHandler, kPlayerDecodeDoneMessage, &messageInfo);
  467. }
  468.  
  469.  
  470. // PlayerExtractProgress
  471. //
  472. OSStatus PlayerExtractProgress (void *appCookie, SoundJamProcPtr playerHandler, void *extractCookie, UInt32 progressInMS)
  473. {
  474.     PlayerMessageInfo    messageInfo;
  475.     
  476.     MemClear(&messageInfo, sizeof(messageInfo));
  477.     
  478.     messageInfo.u.extractProgressMessage.extractCookie    = extractCookie;
  479.     messageInfo.u.extractProgressMessage.progressInMS    = progressInMS;
  480.     
  481.     return CallSoundJam(appCookie, playerHandler, kPlayerExtractProgressMessage, &messageInfo);
  482. }
  483.  
  484.  
  485. // PlayerRegisterVisualPlugin
  486. //
  487. OSStatus PlayerRegisterVisualPlugin (void *appCookie, SoundJamProcPtr playerHandler, PlayerMessageInfo *messageInfo)
  488. {            
  489.     return CallSoundJam(appCookie, playerHandler, kPlayerRegisterVisualPluginMessage, messageInfo);
  490. }
  491.  
  492.  
  493.  
  494. // PlayerRegisterPlayerPlugin
  495. //
  496. OSStatus PlayerRegisterPlayerPlugin (void *appCookie, SoundJamProcPtr playerHandler, PlayerMessageInfo *messageInfo)
  497. {            
  498.     return CallSoundJam(appCookie, playerHandler, kPlayerRegisterPlayerPluginMessage, messageInfo);
  499. }
  500.  
  501.  
  502.  
  503. // PlayerRegisterEncoderPlugin
  504. //
  505. OSStatus PlayerRegisterEncoderPlugin (void *appCookie, SoundJamProcPtr playerHandler, PlayerMessageInfo *messageInfo)
  506. {            
  507.     return CallSoundJam(appCookie, playerHandler, kPlayerRegisterEncoderPluginMessage, messageInfo);
  508. }
  509.  
  510.  
  511. // PlayerRegisterSkinPlugin
  512. //
  513. OSStatus PlayerRegisterSkinPlugin (void *appCookie, SoundJamProcPtr playerHandler, PlayerMessageInfo *messageInfo)
  514. {            
  515.     return CallSoundJam(appCookie, playerHandler, kPlayerRegisterSkinPluginMessage, messageInfo);
  516. }
  517.  
  518.  
  519. // PlayerRegisterDevicePlugin
  520. //
  521. OSStatus PlayerRegisterDevicePlugin (void *appCookie, SoundJamProcPtr playerHandler, PlayerMessageInfo *messageInfo)
  522. {            
  523.     return CallSoundJam(appCookie, playerHandler, kPlayerRegisterDevicePluginMessage, messageInfo);
  524. }
  525.  
  526.  
  527. // PlayerUnregisterPlugin
  528. //
  529. OSStatus PlayerUnregisterPlugin (void *appCookie, SoundJamProcPtr playerHandler, PlayerMessageInfo *messageInfo)
  530. {
  531.     return CallSoundJam(appCookie, playerHandler, kPlayerUnregisterPluginMessage, messageInfo);
  532. }
  533.  
  534.  
  535. // PlayerQueueDeferredTask
  536. //
  537. OSStatus PlayerInstallDeferredTask (void *appCookie, SoundJamProcPtr playerHandler, DeferredTask *dTask)
  538. {
  539.     PlayerMessageInfo    messageInfo;
  540.     
  541.     MemClear(&messageInfo, sizeof(messageInfo));
  542.     
  543.     messageInfo.u.installDeferredTaskMessage.deferredTask = dTask;
  544.         
  545.     return CallSoundJam(appCookie, playerHandler, kPlayerInstallDeferredTaskMessage, &messageInfo);
  546. }
  547.